import os
import re
import pickle

import numpy as np
import scipy.io as scio

from tqdm import tqdm

def process_csi_data(CSI_FOLDER='../WiFi/'):
    """
    处理CSI数据，提取起始时间戳。

    Args:
        CSI_FOLDER (str): 包含CSI数据的文件夹路径，默认为'../WiFi/'。
    Returns:
        CSI_START_TIME_LIST (list): 包含起始时间戳的列表，每个元素为 [CSI文件名, 起始时间戳]。

    # Example usage:
    # csi_start_time_list = process_csi_data(CSI_FOLDER='../WiFi/')
    """
    CSI_FOLDER_LIST = os.listdir(CSI_FOLDER)
    CSI_FOLDER_LIST = sorted(CSI_FOLDER_LIST, key=lambda x: int(re.findall(r'\d+', x)[0]))

    CSI_START_TIME_LIST = []

    for ONECSIDATAFILEPATH in tqdm(CSI_FOLDER_LIST):
        CSIDATANAME = 'rx_' + ONECSIDATAFILEPATH[0] + '_' + ONECSIDATAFILEPATH[1:7] + '_' + ONECSIDATAFILEPATH[7:13]

        csi_file = scio.loadmat(os.path.join(CSI_FOLDER, ONECSIDATAFILEPATH))

        csi_struct = csi_file[CSIDATANAME][0][0][0][0]

        START_TIME = np.float64(csi_struct[1][0][0][2][0] / 1000000000)

        CSI_START_TIME_LIST.append([ONECSIDATAFILEPATH[:13], START_TIME])
    
    return CSI_START_TIME_LIST

